const {
  jwtDecode
} = require("../utils/jwt")
const adminModel = require("../db/model/adminModel")
//token校验中间件
module.exports = async (req, res, next) => {
  const {
    token
  } = req.headers;

  //对token进行解码(返回一个对象 code代表解码的情况)
  const jwtResult = jwtDecode(token, "666")

  //解码失败
  if (jwtResult.code === 0) {
    return res.send({
      code: 20000,
      msg: "服务端权限校验解码失败",
      data: null
    })
  }

  //解码成功,返回的对象中有一个adminName,我们继续去数据库中查询status是否为1
  try {
    const findResult = await adminModel.findOne({
      adminName: jwtResult.adminName
    })

    if (findResult.status === 0) {
      return res.send({
        code: 20000,
        msg: '服务端权限校验失败,数据库保存的status异常',
        data: null
      })
    }

    //权限校验通过,继续向下运行
    next();

  } catch (e) {
    console.log("权限控制中:查询status状态出现异常" + e.message);
    res.send({
      code: 20000,
      msg: "权限控制中:查询status状态出现异常" + e.message,
      data: null
    })
  }

}